主题
部署实践|两台 NVIDIA DGX SPARK 部署 DeepSeek V4 Flash DeepSeek
2026 年 4 月,DeepSeek 发布了旗下最新的混合专家模型 V4 Flash。这款模型拥有 2840 亿参数,支持高达 100 万 Token 的超长上下文,是目前开源社区中最受瞩目的前沿模型之一。
两台 DGX Spark GB10(256GB)运行 DeepSeek V4 Flash
一、下载模型
计划用两台 NVIDIA DGX SPARK 部署 Deepseek V4 Flash NVFP4 模型。
下载地址:
YAML
modelscope download --model nv-community/DeepSeek-V4-Flash-NVFP4模型大小 157GB,Safetensors 格式(分成了 46 个 safetensors 文件)。
二、两台 Spark 的网络连接
两台 Spark 设备通过其 QSFP ConnectX-7 接口,用专用线缆进行互联。
2.1 通过 Netplan 配置静态 IP
编辑 /etc/netplan/50-cloud-init.yaml 文件(把权限设为 700):
YAML
network:
version: 2
ethernets:
# 保留原有的其他网卡配置(如 Wi-Fi)不变
enp1s0f0np0:
dhcp4: no
addresses:
- 192.168.100.2/24 # 给你的 Spark A 配置的 IP,另一台设成 192.168.100.1
mtu: 9000 # 非常重要!然后执行 netplan apply 即可。
在另一台设备上也是一样,只不过 IP 地址换成 192.168.100.2。
三、拷贝模型
把在 Spark2 上下载的模型文件,拷贝到 Spark1 上去。
YAML
rsync -av --progress --bwlimit=0 --inplace \
root@x1:/root/.cache/modelscope/hub/models/nv-community \
/root/.cache/modelscope/hub/models/四、准备 VLLM
使用 vllm 的容器化部署。
截止 2026.06.30,vllm 官方提供的 vllm/vllm-openai:nightly-aarch64 镜像,对 GB10 的支持有问题,总是报错:
YAML
RuntimeError: dispatch_scaled_mm, /workspace/csrc/libtorch_stable/quantization/w8a8/cutlass/c3x/scaled_mm_helper.hpp:17大规模建议用 vllm 的社区分支:https://github.com/eugr/spark-vllm-docker/tree/main
但是这个分支没有现成的镜像,需要自己构建。
克隆分支(commit cf0d5f6,2026-06-26)后,进入 spark-vllm-docker 目录,运行 build-and-copy.sh,系统开始镜像构建。
注意:这里一定要挂梯子,因为很多内容都需要从墙外拉取。
构建之后的镜像为:vllm-node:latest
手动把构建的镜像拷贝到另一台 Spark 服务器上。
五、准备并启动 Ray 环境
5.1 准备 Ray 环境
5.1.1 Ray Head
在 Spark1 上,创建以下 docker compose 文件,以 Spark1 做为 Ray 环境的 Head:
YAML
services:
vllm-head:
image: vllm-node:latest
container_name: vllm-head
runtime: nvidia
network_mode: host
ipc: host
privileged: true
shm_size: "16g"
entrypoint: ["/bin/bash", "-lc"]
ulimits:
memlock: -1
stack: 67108864
environment:
VLLM_HOST_IP: 192.168.100.1
RAY_node_ip_address: 192.168.100.1
NCCL_SOCKET_IFNAME: enp1s0f0np0
GLOO_SOCKET_IFNAME: enp1s0f0np0
NCCL_IB_DISABLE: "0"
NCCL_IB_HCA: rocep1s0f0
NCCL_IB_GID_INDEX: "3"
NCCL_DEBUG: INFO
volumes:
- /root/.cache/modelscope/hub/models/nv-community:/models
# - /root/.cache/modelscope/hub/models/deepseek-ai:/models
command: ["ray start --head --node-ip-address=192.168.100.1 --port=6379 --dashboard-host=0.0.0.0 --disable-usage-stats --block"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]5.1.2 Ray Worker
在 Spark2 上,创建 docker compose 文件,以 Spark2 为 Ray 环境的 Worker:
YAML
services:
vllm-worker:
image: vllm-node:latest
container_name: vllm-worker
runtime: nvidia
network_mode: host
ipc: host
privileged: true
shm_size: "16g"
entrypoint: ["/bin/bash", "-lc"]
ulimits:
memlock: -1
stack: 67108864
environment:
VLLM_HOST_IP: 192.168.100.2
RAY_node_ip_address: 192.168.100.2
NCCL_SOCKET_IFNAME: enp1s0f0np0
GLOO_SOCKET_IFNAME: enp1s0f0np0
NCCL_IB_DISABLE: "0"
NCCL_IB_HCA: rocep1s0f0
NCCL_IB_GID_INDEX: "3"
NCCL_DEBUG: INFO
volumes:
- /root/.cache/modelscope/hub/models/nv-community:/models
# - /root/.cache/modelscope/hub/models/deepseek-ai:/models
command: ["ray start --address=192.168.100.1:6379 --node-ip-address=192.168.100.2 --disable-usage-stats --block"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]5.2 启动 Ray
在两台服务器上,分别用 docker compose up -d 启动 Ray Head 和 Ray Worker。
在 Spark1 上,进入 Ray Head 容器内部,查看 ray 的状态:
YAML
ray list nodes六、启动 vllm 加载模型
在 Spark1 上,进入 Ray Head 容器内部,执行以下命令:
Bash
exec vllm serve \
/models/DeepSeek-V4-Flash-NVFP4 \
--port 8800 --host 0.0.0.0 \
--enable-expert-parallel \
--trust-remote-code \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.7 \
--tensor-parallel-size 2 \
--distributed-executor-backend ray \
--enforce-eager \
--max-model-len 32768 \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--enable-auto-tool-choice \
--reasoning-parser deepseek_v4vllm 启动,加载模型,大致需要10分钟左右的时间。
七、性能测试
7.1 同步吞吐量测试
| 测试 | prompt 字符数 | 生成 tokens | 耗时(秒) | 吞吐量 t/s |
|---|---|---|---|---|
| 第一轮 | 31 | 1000 | 48.73 | 20.52 |
| 第二轮 | 28 | 882 | 40.27 | 20.41 |
| 第三轮 | 24 | 1000 | 49.06 | 20.38 |
7.2 流式输出
测试Prompt: 请详细介绍一下人工智能的发展历史、主要技术突破和未来发展趋势。...
首token延迟 (TTFT): 0.185 秒
流式输出统计:
生成tokens: 1000
总耗时: 48.28 秒
平均吞吐量: 20.71 tokens/秒
首token延迟: 0.185 秒
7.3 并发测试

八、踩坑
8.1 官方的镜像总是报错
截 2026.6.30,官方的 vllm/vllm-openai:nightly-aarch64 总是报错。想了各种办法绕不过去。
8.2 deepseek-ai/DeepSeek-V4-Flash 能跑,但输出混乱
使用方官的 deepseek-ai/DeepSeek-V4-Flash,模型能成功加载,但输出是一堆混乱的内容,完全没有意义。
8.3 社区版镜像的 launcher 不知道怎么用
社区版镜像自带一个 launcher,但文档不全。它默认认为模型是从 Huggingface 上下载的。而我是从 modelscope 上下载的。用社区版镜像的 launcher 总是失败。